# （1）定义一个学生类，且学生在努力学习；
# （2）创建一个对象，同时输出对象名、self，了解self的含义；
# （3）再到学生类中，定义一个学生睡觉的行为，并分别通过对象名、self调用方法；
# （4）执行程序，观察self的效果。
# 定义学生类
class Student:

    name = "张三"
    def study(self):
        """
        self是对象调用时会自动传递的参数，不需要手动传入
        :return:
        """
        print("正在努力学习！！！")

    def sleep(self):
        print("学生正在睡觉！！！")
        print(self)
        Student.study(self)

if __name__ == '__main__':
    # 创建两个对象
    stu1 = Student()
    stu2 = Student()
    # # <__main__.Student object at 0x000001DA16D36A60>
    # print(stu1)
    # # <__main__.Student object at 0x000001B46A846A60>
    # stu1.sleep()
    # # <__main__.Student object at 0x000001DA16D7B190>
    # print(stu2)
    # # <__main__.Student object at 0x000001B46A88B190>
    # stu2.sleep()
    # Student.sleep(stu2)
    # # TypeError: study() missing 1 required positional argument: 'self'
    # # 类外面不能通过类直接调用属性方法，因为没有self参数
    # Student.study(stu1)
    # stu1.study()
    print(stu1.name)
    print(Student.name)